package com.wn.mine.view

import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import com.alibaba.android.arouter.launcher.ARouter
import com.blankj.utilcode.util.ToastUtils
import com.wn.common.base.BaseFragment
import com.wn.common.webview.WebViewActivity
import com.wn.mine.MineViewModel
import com.wn.mine.R
import com.wn.mine.databinding.FragmentMineStartBinding
import dagger.hilt.android.AndroidEntryPoint

/**
 * @Author: wn
 * @Date: 2023/5/12 15:46
 * @Description: 个人中心--主模块
 */

@AndroidEntryPoint
class MineStartFragment : BaseFragment<FragmentMineStartBinding>() {

  override fun getLayoutRes() = R.layout.fragment_mine_start
  private val mineViewModel by viewModels<MineViewModel>()

  // 初始化视图
  override fun initView() {
    super.initView()
    /**
     * UI 相关的 操作 在 Activity 执行
     * 数据 相关的操作 在  viewModel  执行
     */
    mBinding.apply {
      vm = mineViewModel
      // 头像 跳转到 个人信息页面  nav_graph
      ivUserIconMine.setOnClickListener {
        /**
         * navigation 导航 Safe Args   类型必须匹配
         * 1 工程 gradle
         * 2 项目 gradle
         * 3 自动创建 id+Directions   id+Args
         * 4 导航代码
         */
        val info = mineViewModel.liveInfoRsp.value
        if (info === null)
          ARouter.getInstance().build("/login/login").navigation()
        else {
          val action = MineStartFragmentDirections.actionMineStartFragmentToMineInfoFragment(info)
          findNavController().navigate(action)
        }
      }
      // 未登录状态下点击用户名位置 ARouter 跳转到登录界面
      tvUserNameMine.setOnClickListener {
        // 没有数据 跳转到登录界面
        mineViewModel.liveInfoRsp.value
          ?: ARouter.getInstance().build("/login/login").navigation()
      }
      /**
       * 退出登陆
       * 清空登录数据
       * 清空存储在本地的 token  仓库中
       * 跳转到Login登录界面
       */
      btnLogoutMine.setOnClickListener {
        mineViewModel.liveInfoRsp.value
          ?.let {
            mineViewModel.deleteUserAndToken(it)
            ARouter.getInstance().build("/login/login").navigation()
          }
      }
      /**
       * 各个按钮的点击事件，跳转到H5
       * 移入 viewModel
       */
      // tvOrdersMine.setOnClickListener {}
      tvCouponMine.setOnClickListener {
        ToastUtils.showShort("正在访问正式接口")
        WebViewActivity.openUrl(requireContext(), "https://m.cniao5.com/user/coupon")
      }
      isvStudyCardMine.setOnClickListener {
        ToastUtils.showShort("正在访问正式接口")
        WebViewActivity.openUrl(requireContext(), "https://m.cniao5.com/sharecard")
      }
      isvShareSaleMine.setOnClickListener {
        ToastUtils.showShort("正在访问正式接口")
        WebViewActivity.openUrl(requireContext(), "https://m.cniao5.com/distribution")
      }
      isvGroupShoppingMine.setOnClickListener {
        ToastUtils.showShort("正在访问正式接口")
        WebViewActivity.openUrl(requireContext(), "https://m.cniao5.com/user/pintuan")
      }
      isvLikedCourseMine.setOnClickListener {
        ToastUtils.showShort("正在访问正式接口")
        WebViewActivity.openUrl(requireContext(), "https://m.cniao5.com/user/favorites")
      }
      isvFeedbackMine.setOnClickListener {
        ToastUtils.showShort("正在访问正式接口")
        //8.0以后不建议用http,需要在app manifest中声明 android:usesCleartextTraffic="true"
        WebViewActivity.openUrl(requireContext(), "http://cniao555.mikecrm.com/ktbB0ht")
      }

      /* test.setTitle("实例设置 描述文字")
       test.onClickTitle {
         ToastUtils.showLong("111111111111111111")
       } */
    }
  }

  override fun initData() {
    super.initData()
    mineViewModel.apply {
      liveUserInfo.observeKt {
        liveInfoRsp.value = it
//        userInfoBean.set(it)
      }
    }
  }

  /**
   * nav 跳转 (info) 重走 initData  初始化一次 需要获取的数据
   * ARouter(login) 不会触发  initData   活跃状态需要 刷新的 数据
   * room-LiveData 初始化查询一次 可以持续观察
   * room-user-LiveData 每次需要重新 查询
   */
  override fun initLazyData() {
    super.initLazyData()
    // 初始化 数据 -- 数据库查询
    mineViewModel.getUserInfo()
  }

}